#ifndef SIMILARITY_H
#define SIMILARITY_H

#include <QVector>

#define SIMILARITY_METHOD_COSINE 0
#define SIMILARITY_METHOD_EUCLIDEAN 1
#define SIMILARITY_METHOD_COMBINED 2

#define SIMILARITY_METHOD SIMILARITY_METHOD_COMBINED

class Similarity {
public:
    static float calculate(const QVector<float>& vec1, const QVector<float>& vec2);

private:
    static float cosineSimilarity(const QVector<float>& vec1, const QVector<float>& vec2);
    static float euclideanDistance(const QVector<float>& vec1, const QVector<float>& vec2);
    static float combinedSimilarity(const QVector<float>& vec1, const QVector<float>& vec2);
};

#endif // SIMILARITY_H
